<?php

1、session 的开始是基于中间件。
    在文件 \app\Http\Kernel.php 中看到
    protected $middlewareGroups = [
        'web' => [
            \App\Http\Middleware\EncryptCookies::class,
            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
            \Illuminate\Session\Middleware\StartSession::class,
            \Illuminate\View\Middleware\ShareErrorsFromSession::class,
            \App\Http\Middleware\VerifyCsrfToken::class,
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
        ],

        'api' => [
            'throttle:60,1',
            'bindings',
        ],
    ];

    也就是访问 web 中间件的路由时，session 是自动开启的（\Illuminate\Session\Middleware\StartSession::class,）。
    web 中间件的路由：在 笔记/route.php 文件中知道，就是 routes/web.php 中定义的路由。
    那么，访问 http://x.y.z:port/ 时，就是自动开启的。

    一开始测试时，我用的是 api 中间件的路由。
    但是从上面的代码中看到，api 中间件并没有 \Illuminate\Session\Middleware\StartSession::class,
    那么就是没有自动启动session。
    这也和测试情况一致。
    后来我在 \app\Http\Kernel.php 的
    protected $middleware = [
        \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
    ];
    添加了一项
    \Illuminate\Session\Middleware\StartSession::class,
    虽然成功的开启了 session，但不合理。因为，此时对于 web 中间件的路由来说，就执行了两次 session。
    即使内部做了判断，不会启动两次，都也不应该这么做。
    况且，不知道是否做了判断。
    总之，不要这么做。

2、
